####基本格式######
#target0 [target1]...: componetns0 [componetns1]...
#	$(CMD0)
#	...
##################	
#一个变量的定义从=后面的第一个非空白字符开始（从$(x)的$开始），包括后面的所有字符，直到注释或换行之前结束
#$@: one of the targets
#$^: all components
#$<: first of the components
#$?: components which are newer than targets
#$*: 代表目标主文件名(去掉后缀)之一
#make -p &>default.txt: 查看默认规则
#=: 命令行引用时展开
#:=: 立即展开
#?=: A?=$(B)如果A定义过则忽略，否则A = $(B)
#gcc -M *.c:打印.c文件对应的目标文件的依赖关系  

#通用模板
#http://www.cnblogs.com/sysu-blackbear/p/4034394.html
#http://ffwmxr.blog.163.com/blog/static/66372722201191083418306/

#主要变量
APP = app
SRCS = $(wildcard *.c) #当前目录下所有.c结尾的文件名，以空格区分 
#SRCS = $(wildcard *.c ../lib/*.c)
OBJS = $(SRCS:.c=.o) #把SRCS中的.c全部替换为.o,等号右边空格看作字符
CC = gcc
#INCLUDES = -I ./headers -I ./src
#LIBS = -L ./lib
CFLAGS = -g -Wall -O0 #编译选项(生成目标文件时使用)

#依赖关系及转化命令
$(APP): $(OBJS)
	$(CC) $(INCLUDES) $(LIBS) $^ -o $@ 
#%.o: %.c
#	$(COMPILE.c) $@ $<
#COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c


include	$(SRCS:.c=.d)
%.d: %.c
	set -e; rm -f $@;\
	$(CC) -MM $(CPPFLAGS) $< > $@.$$$$;\
	sed 's,\($*\)\.o[ :]*,\1.o $@ :,g' < $@.$$$$ > $@;\
	rm -f $@.$$$$

clean:
	-rm -f $(APP) $(OBJS) $(SRCS:.c=.d)
	@echo 'Tmpfile cleaned'
.PHONY: clean

#Shell 命令
#WDIR = $(shell pwd)



